# -*- coding: utf-8 -*-
"""
数据库配置和系统配置
"""
import os
from typing import Dict, Any
from dotenv import load_dotenv

# 加载环境变量
load_dotenv()

# 数据库配置
DATABASE_CONFIG = {
    'host': os.getenv('DB_HOST', 'rm-8vbd478h479n0o6epbo.mysql.zhangbei.rds.aliyuncs.com'),
    'port': int(os.getenv('DB_PORT', 3306)),
    'user': os.getenv('DB_USER', 'my_stock'),
    'password': os.getenv('DB_PASSWORD', 'Qwer@1234'),
    'database': os.getenv('DB_NAME', 'my_stock'),
    'charset': 'utf8mb4'
}

# 数据源配置
DATA_SOURCE_CONFIG = {
    'tushare_token': os.getenv('TUSHARE_TOKEN', ''),  # 需要申请tushare token
    'data_source': 'tushare',  # 指定数据源: 'akshare' 或 'tushare'
    'request_delay': 0.35,  # Tushare限制：每分钟最多200次，约0.3秒一次，设置0.35留余量
    'retry_times': 3,  # 重试次数
    'timeout': 30  # 请求超时时间
}

# 同步配置
SYNC_CONFIG = {
    'batch_size': 1000,  # 批量处理大小
    'max_workers': 5,  # 最大并发数
    'request_delay': 0.35,  # 请求延迟（秒），Tushare每分钟最多200次
    'log_level': 'INFO',
    'default_sync_days': 365,  # 默认同步天数（1年）
    'max_sync_days': 3650  # 最大同步天数（10年）
}

# 日志配置
LOGGING_CONFIG = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'standard': {
            'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s'
        },
    },
    'handlers': {
        'default': {
            'level': 'INFO',
            'formatter': 'standard',
            'class': 'logging.StreamHandler',
        },
        'file': {
            'level': 'INFO',
            'formatter': 'standard',
            'class': 'logging.FileHandler',
            'filename': 'logs/stock_sync.log',
            'mode': 'a',
        },
    },
    'loggers': {
        '': {
            'handlers': ['default', 'file'],
            'level': 'INFO',
            'propagate': False
        }
    }
}
